Chuyển đổi PDF sang Word bằng Python với PyPDF2 và python-docx

Chuyển đổi PDF sang Word bằng Python với PyPDF2 và python-docx

Hướng dẫn lập trình: Chuyển đổi PDF sang Word bằng Python với PyPDF2 và python-docx

Giới thiệu

Kết hợp hai thư viện Python PyPDF2python-docx, bạn có thể dễ dàng trích xuất nội dung từ tệp PDF và chèn nội dung đó vào tài liệu Word. Hướng dẫn này sẽ giải thích chi tiết từng bước thực hiện, cùng các mẹo xử lý lỗi để đạt hiệu quả tốt nhất.


Code mẫu:

from PyPDF2 import PdfFileReader
from docx import Document

# Đường dẫn tệp PDF và tệp Word đầu ra
pdf_document = "input.pdf"
output_word = "output.docx"

# Hàm trích xuất nội dung từ tệp PDF
def extract_text_from_pdf(pdf_path):
    text = ""
    with open(pdf_path, "rb") as file:
        pdf_reader = PdfFileReader(file)
        for page_num in range(pdf_reader.numPages):
            page = pdf_reader.getPage(page_num)
            text += page.extract_text()
    return text

# Trích xuất văn bản từ PDF
text = extract_text_from_pdf(pdf_document)

# Tạo tài liệu Word và ghi nội dung đã trích xuất
doc = Document()
doc.add_paragraph(text)
doc.save(output_word)

Phân tích chi tiết mã lệnh:

  1. Nhập thư viện:
    • PdfFileReader từ PyPDF2: Được sử dụng để đọc và xử lý tệp PDF.
    • Document từ python-docx: Được sử dụng để tạo và chỉnh sửa tài liệu Word.
  2. Xác định đường dẫn tệp:

    pdf_document = "input.pdf"
    output_word = "output.docx"
    
    • pdf_document: Đường dẫn của tệp PDF nguồn.
    • output_word: Đường dẫn của tệp Word đầu ra.
  3. Hàm trích xuất văn bản từ PDF:

    def extract_text_from_pdf(pdf_path):
        text = ""
        with open(pdf_path, "rb") as file:
            pdf_reader = PdfFileReader(file)
            for page_num in range(pdf_reader.numPages):
                page = pdf_reader.getPage(page_num)
                text += page.extract_text()
        return text
    
    • Mở tệp PDF ở chế độ đọc nhị phân (rb).
    • Lặp qua từng trang và sử dụng page.extract_text() để trích xuất nội dung.
  4. Tạo tài liệu Word và ghi văn bản:

    doc = Document()
    doc.add_paragraph(text)
    doc.save(output_word)
    
    • Document() tạo một tài liệu Word mới.
    • add_paragraph() thêm văn bản vào tài liệu.
    • save() lưu tài liệu Word với tên tệp chỉ định.

Các lỗi thường gặp và cách khắc phục:

1. Xử lý tệp PDF được mã hóa:

  • Một số tệp PDF có thể được bảo vệ bằng mật khẩu. Để trích xuất nội dung, cần giải mã tệp trước khi xử lý:

    def extract_text_from_pdf(pdf_path):
        text = ""
        with open(pdf_path, "rb") as file:
            pdf_reader = PdfFileReader(file)
            if pdf_reader.isEncrypted:
                pdf_reader.decrypt("")  # Thay "" bằng mật khẩu nếu có
            for page_num in range(pdf_reader.numPages):
                page = pdf_reader.getPage(page_num)
                text += page.extract_text()
        return text
    

2. Giảm tiêu thụ bộ nhớ khi xử lý tệp PDF lớn:

  • Để tránh tiêu thụ quá nhiều bộ nhớ, xử lý từng trang riêng lẻ thay vì tải toàn bộ tệp cùng lúc:

    def extract_text_from_pdf(pdf_path):
        text = ""
        with open(pdf_path, "rb") as file:
            pdf_reader = PdfFileReader(file)
            for page_num in range(pdf_reader.numPages):
                page = pdf_reader.getPage(page_num)
                text += page.extract_text()
        return text
    

Ưu điểm của PyPDF2 và python-docx:

  1. Dễ sử dụng:
    • PyPDF2 giúp trích xuất nội dung từ PDF, trong khi python-docx cho phép dễ dàng tạo và chỉnh sửa tài liệu Word.
  2. Tích hợp mạnh mẽ:
    • Có thể kết hợp với các thư viện khác để xử lý dữ liệu phức tạp.
  3. Giữ định dạng cơ bản:
    • Mặc dù không bảo toàn hoàn toàn định dạng gốc, nhưng các đoạn văn bản được tổ chức một cách hợp lý trong Word.

Hạn chế:

  1. Không bảo toàn định dạng phức tạp:
    • Các bảng biểu, hình ảnh hoặc định dạng phức tạp trong PDF có thể bị mất khi chuyển đổi.
  2. Không xử lý được PDF dạng ảnh:
    • Với PDF chứa nội dung dạng ảnh, cần sử dụng thêm OCR (nhận diện ký tự quang học) như thư viện pytesseract.

Các vấn đề hay tìm kiếm:

  •  "Hướng dẫn chuyển đổi PDF sang Word bằng Python với PyPDF2 và python-docx"
  •  "Khám phá cách sử dụng PyPDF2 và python-docx để chuyển đổi PDF sang Word dễ dàng. Hướng dẫn chi tiết, kèm giải pháp xử lý lỗi thường gặp."
  •  "Chuyển đổi PDF sang Word", "Python PyPDF2", "Python xử lý Word", "Trích xuất văn bản PDF".

Tham khảo :

  1. Ngay trang chủ chuyendoi24h.com là ví dụ sử dụng pypdf2 để chuyển đổi pdf sang word
  2. Cách Chuyển File PDF Sang Word Đơn Giản Và Nhanh Chóng
  3. pdf2docx - Thư viện Python chuyển đổi PDF sang Word
  4. Sử dụng PyMuPDF để chuyển đổi PDF sang word trong lập trình Python

Hy vọng bài hướng dẫn này sẽ giúp bạn thành công trong việc chuyển đổi PDF sang Word! 😊